#ifndef NETWORK_MANAGER_H
#define NETWORK_MANAGER_H

/*! Include UBoost Networking Header */
#define BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN
#include <boost/asio.hpp>
#ifdef _WIN32
#include <windows.h>
#endif



/*! Include Updateable Template Header */
#include "../../../Base/Updateable.h"
#include "TcpServer.h"
#include "TcpClient.h"

//using namespace boost;
using boost::asio::ip::tcp;

namespace mp_net
{
	using namespace mp_base;
	/*!----------------------------------------------------------------
	*	@class		NetworkManager
	*	@brief		
	*
	*	@author		Mitchell Pell
	*	@date		9/28/2013
	*	@version	1.0
	*
	----------------------------------------------------------------*/
	class NetworkManager : public Updateable
	{
	public:
		NetworkManager(bool server=false);
		~NetworkManager();

		void Initialize();
		void Uninitialize();
		void Update();

		void Run();

	private:
		TcpServer*		m_server;
		TcpClient*		m_client;
		spIoService		m_ioService;
	};
}
#endif